
perf = typeof perf == "undefined" ? {} : perf ;
perf.expressions = {};
perf.exps = perf.expressions;

/**
 * @class すべての条件を満たす条件
 */
perf.expressions.all = function(  ){
  var exps = arguments;
  return function(context) {
    for ( var i=0,n=exps.length;i<n;i++ ) {
      if (!exps[i]( context )) return false;
    }
    return true;
  }
};
/**
 * @class いずれかの条件を満たす条件
 */
perf.expressions.any = function( ){
  var exps = arguments;
  return function(context) {
    for ( var i=0,n=exps.length;i<n;i++ ) {
      if (exps[i].evaluate( context )) return true;
    }
    return false;
  }
};
/**
 * @class ログが記録されていることを示す条件
 */
perf.expressions.logged = function(event) {
  return function(context) {
    return !!context.logger.logs[event];
  }
};